package com.fowo.api.model.wfs.cargo;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fowo.api.common.validator.*;
import io.swagger.v3.oas.annotations.media.Schema;
import javax.validation.constraints.*;
import lombok.Getter;
import lombok.Setter;

/**
 * WFS货件 预览导入辅助模型(全字段为文本类型)
 * @author yl_ls
 */
@Getter
@Setter
public class WfsCargoImportPo {

  /** 货件单号 */
  @ExcelProperty("货件单号")
  private String cargoCode;

  /** 店铺 */
  @ExcelProperty("*店铺")
  @NotBlank(message = "店铺不能为空")
  @Size(max = 50, message = "店铺长度不能超过50")
  private String shopIdShopName;

  @ExcelIgnore
  @Schema(title = "*店铺")
  private String shopId;

  /** 入库订单编号 */
  @ExcelProperty("入库订单编号")
  private String inBoundOrderId;

  /** 物流中心编号 */
  @ExcelProperty("物流中心编号")
  @Size(max = 50, message = "物流中心编号长度不能超过50")
  private String logisticsCode;

  /** 配送地址 */
  @ExcelProperty("配送地址")
  @Size(max = 50, message = "配送地址长度不能超过50")
  private String distributionAddresses;

  /** 退货地址 */
  @ExcelProperty("*退货地址")
  @NotBlank(message = "退货地址不能为空")
  private String returnAddressesPlatform;

  @ExcelIgnore
  @Schema(title = "*退货地址")
  private String returnAddresses;

  /** 国家/地区 */
  @ExcelProperty("国家/地区")
  @Size(max = 200, message = "国家/地区长度不能超过200")
  private String countryNameCountry;

  @ExcelIgnore
  @Schema(title = "国家/地区")
  private String countryName;

  /** 详细地址 */
  @ExcelProperty("详细地址")
  @Size(max = 50, message = "详细地址长度不能超过50")
  private String detailedAddress;

  /** 平台货件状态 */
  @ExcelProperty("平台货件状态")
  private String cargoStatus;

  /** 货件本地状态 */
  @ExcelProperty("货件本地状态")
  @EnumsString(
    value = { "已申报", "已发货", "入库中", "已完成", "已取消", "待申报" },
    message = "货件本地状态只能是“已申报”, “已发货”, “入库中”, “已完成”, “已取消”, “待申报”中的一个"
  )
  private String cargoSyncStatus;

  /** 发货单号 */
  @ExcelProperty("发货单号")
  @Size(max = 50, message = "发货单号长度不能超过50")
  private String shippingListCodes;

  /** 承运人 */
  @ExcelProperty("承运人")
  @Size(max = 50, message = "承运人长度不能超过50")
  private String contractors;

  /** 箱数 */
  @ExcelProperty("箱数")
  @IntegerString(message = "箱数数值格式不正确", label = "箱数", min = 0)
  private String cases;

  /** 城市 */
  @ExcelProperty("城市")
  @Size(max = 50, message = "城市长度不能超过50")
  private String ctiy;

  /** 省州地区 */
  @ExcelProperty("省州地区")
  @Size(max = 50, message = "省州地区长度不能超过50")
  private String area;

  /** 邮政编码 */
  @ExcelProperty("邮政编码")
  @Size(max = 50, message = "邮政编码长度不能超过50")
  private String postalCode;

  /** 备注 */
  @ExcelProperty("备注")
  @Size(max = 50, message = "备注长度不能超过50")
  private String remarks;

  /** 发货状态 */
  @ExcelProperty("发货状态")
  @EnumsString(
    value = { "是", "否" },
    message = "发货状态只能是“是”, “否”中的一个"
  )
  private String shipmentStatus;

  /** 完成时间 */
  @ExcelProperty("完成时间")
  @DateTimeString(message = "完成时间不是有效的时间日期格式")
  private String completedTime;

  /** 货件号 */
  @ExcelProperty("货件号")
  @Size(max = 50, message = "货件号长度不能超过50")
  private String wfsshipment;
}
